home *** CD-ROM | disk | FTP | other *** search
/ Aminet 40 / Aminet 40 (2000)(Schatztruhe)[!][Dec 2000].iso / Aminet / misc / emu / ATUtilities.lha / ATUtilities / BASIC / ADIR.BAS < prev    next >
BASIC Source File  |  2000-09-26  |  4KB  |  181 lines

  1. $INCLUDE "REGNAMES.INC"
  2. COLOR 14
  3.  
  4. IF CheckVector(&H49)=0 THEN
  5.  SOUND 2000,2
  6.  PRINT "FEHLER: ATUtilities File Transfer ist nicht installiert!"
  7.  GOTO ende
  8. END IF
  9. GOSUB CmdAuswertung
  10.  
  11. REG %AX,(&H6*256)
  12. CALL INTERRUPT &H49
  13. segment=REG(%ES)
  14. offset=REG(%DI)
  15.  
  16. DEF SEG = segment
  17. a$=a$+CHR$(0)
  18. FOR i=1 TO LEN(a$)
  19.  POKE offset+i-1,ASC(MID$(a$,i,1))
  20. NEXT
  21.  
  22. REG %AX,(12*256)
  23. CALL INTERRUPT &H49
  24. IF REG(%BX)=10000 THEN
  25.  fl=REG(%CX)
  26.  REG %BX,fl
  27.  REG %AX,(14*256)
  28.  CALL INTERRUPT &H49
  29.  COLOR 11
  30.  PRINT "Verzeichnis:  ";
  31.  i=0 : ok=0
  32.  WHILE ok=0
  33.   x$=CHR$(PEEK(offset+i))
  34.   IF x$<>CHR$(0) THEN PRINT x$; ELSE ok=1
  35.   i=i+1
  36.  WEND
  37.  PRINT ""
  38.  REG %BX,fl
  39.  REG %AX,(13*256)
  40.  CALL INTERRUPT &H49
  41. ELSE
  42.  SOUND 2000,2
  43.  PRINT "Verzeichnis ";a$;"ist nicht vorhanden/Zugriff verweigert."
  44.  GOTO ende
  45. END IF
  46.  
  47. FOR i=1 TO LEN(a$)
  48.  POKE offset+i-1,ASC(MID$(a$,i,1))
  49. NEXT
  50. REG %AX,(11*256)
  51. CALL INTERRUPT &H49
  52. IF REG(%BX)=10000 THEN
  53.  DEF SEG = segment
  54.  anz=REG(%CX)
  55.  PRINT "Erstellt am:  ";
  56.  day=PEEK(offset+40)
  57.  month=PEEK(offset+41)
  58.  year=PEEKI(offset+42)
  59.  PRINT Format$(day," ");" .";Format$(month," ");".";year;
  60.  PRINT ""
  61.  PRINT "Eintr„ge:    ";anz
  62.  PRINT ""
  63.  zeile=5
  64.  
  65.  COLOR 14
  66.  ofs=offset+44
  67.  p&=0 : dateien=0
  68.  FOR i=1 TO anz
  69.   typ=PEEK(ofs+36)
  70.   IF typ=1 THEN COLOR 9 ELSE COLOR 14
  71.   FOR j=0 TO 29
  72.    PRINT CHR$(PEEK(ofs+j));
  73.   NEXT
  74.   IF typ=1 THEN
  75.    LOCATE ,31
  76.    PRINT "Verzeichnis";
  77.   ELSE
  78.    s&=PEEKL(ofs+30)
  79.    x$=STR$(s&)
  80.    LOCATE ,40-LEN(x$)
  81.    PRINT x$;
  82.    p&=p&+s&
  83.    dateien=dateien+1
  84.   END IF
  85.   LOCATE ,44
  86.   pro=PEEKI(ofs+34)
  87.   IF (pro AND 1) THEN d$="-" ELSE d$="D"
  88.   IF (pro AND 2) THEN e$="-" ELSE e$="E"
  89.   IF (pro AND 4) THEN w$="-" ELSE w$="W"
  90.   IF (pro AND 8) THEN r$="-" ELSE r$="R"
  91.   IF (pro AND 16) THEN a$="A" ELSE a$="-"
  92.   IF (pro AND 32) THEN p$="P" ELSE p$="-"
  93.   IF (pro AND 64) THEN s$="S" ELSE s$="-"
  94.   IF (pro AND 128) THEN h$="H" ELSE h$="-"
  95.   PRINT h$;s$;p$;a$;r$;w$;e$;d$;
  96.   LOCATE ,54
  97.   hour=PEEK(ofs+37)
  98.   minute=PEEK(ofs+38)
  99.   second=PEEK(ofs+39)
  100.   PRINT Format$(hour," ");":";Format$(minute,"0");":";Format$(second,"0");"  ";
  101.   day=PEEK(ofs+40)
  102.   month=PEEK(ofs+41)
  103.   year=PEEKI(ofs+42)
  104.   LOCATE ,66
  105.   PRINT Format$(day," ");" .";Format$(month," ");".";year;
  106.   PRINT ""
  107.   zeile=zeile+1
  108.   ofs=ofs+44
  109.   IF zeile=23 THEN
  110.    COLOR 11
  111.    PRINT "-- Weiter mit beliebiger Taste oder Ende mit ESC ----------------------------"
  112.    i$=INKEY$
  113.    WHILE i$="" : i$=INKEY$ : WEND
  114.    COLOR 14
  115.    IF i$=CHR$(27) THEN GOTO ende
  116.    zeile=1
  117.   END IF
  118.  NEXT
  119.  PRINT ""
  120.  IF p&>(100*1024) THEN
  121.    e$=" KBytes"
  122.    p&=p&/1024
  123.   IF p&>(10*1024) THEN
  124.    e$=" MBytes" : p&=p&/1024
  125.   END IF
  126.  ELSE
  127.   e$=" Bytes"
  128.  END IF
  129.  s$=STR$(p&)+e$
  130.  COLOR 14
  131.  PRINT "Das Verzeichnis besitzt";s$;" in";dateien;"Dateien."
  132. ELSE
  133.  SOUND 2000,2
  134.  PRINT "Zugriff auf Amiga-Verzeichnis ";a$;"verweigert."
  135. END IF
  136.  
  137. ende:
  138. COLOR 7
  139. END
  140.  
  141. CmdAuswertung:
  142. cmd$=COMMAND$
  143. a$=cmd$
  144. IF a$="/?" OR a$="?" THEN
  145.  GOTO argf
  146. END IF
  147. IF a$="" THEN a$=STRING$(20,CHR$(0))
  148. RETURN
  149.  
  150. argf:
  151. SOUND 2000,2
  152. PRINT "ADir - Version 1.0  Copyright (C) 1993 by Thomas Dreibholz"
  153. PRINT ""
  154. PRINT "ADir listet ein beliebiges Amiga-Verzeichnis auf (Dir-Befehl). Wird kein"
  155. PRINT "Verzeichnisname angegeben, so wird das aktuelle Verzeichnis angezeigt."
  156. PRINT "Dieses kann mit ACD gewechselt werden."
  157. PRINT ""
  158. PRINT "Aufruf: ADir {Amiga-Verzeichnis | ? | /?}"
  159. PRINT ""
  160. GOTO ende
  161.  
  162.  
  163. FUNCTION CheckVector(num) STATIC
  164.  REG %AX,(&H35*256)+num
  165.  CALL INTERRUPT &H21
  166.  segm=REG(%ES)
  167.  offs=REG(%BX)
  168.  DEF SEG = segm
  169.  IF (segm=0) OR (PEEK(offs)=207) THEN
  170.   CheckVector=0
  171.  ELSE
  172.   CheckVector=1
  173.  END IF
  174. END FUNCTION
  175.  
  176. FUNCTION Format$(num,c$) STATIC
  177.  n$=STR$(num)
  178.  n$=MID$(n$,2,LEN(n$)-1)
  179.  IF LEN(n$)=1 THEN n$=c$+n$
  180.  Format$=n$
  181. END FUNCTION